
var express = require('express');
var router = express.Router();
var path = require("path");

// 获取验证模块
var authorization = require(path.join(process.cwd(), "/modules/authorization"));

// 通过验证模块获取用户管理服务
var mgrServ = authorization.getService("ManagerService");


// 查询用户列表
router.get("/",
	// 验证参数
	function (req, res, next) {
		// 参数验证
		if (!req.query.pagenum || req.query.pagenum <= 0) return res.sendResult(null, 400, "pagenum 参数错误");
		if (!req.query.pagesize || req.query.pagesize <= 0) return res.sendResult(null, 400, "pagesize 参数错误");
		next();
	},
	// 处理业务逻辑
	function (req, res, next) {
		mgrServ.getAllManagers(
			{
				"query": req.query.query,
				"pagenum": req.query.pagenum,
				"pagesize": req.query.pagesize
			},
			function (err, result) {
				if (err) return res.sendResult(null, 400, err);
				res.sendResult(result, 200, "获取管理员列表成功");
			}
		)(req, res, next);

	}
);

// 获取用户信息
router.get("/:id",
	// 参数验证
	function (req, res, next) {
		if (!req.params.id) {
			return res.sendResult(null, 400, "用户ID不能为空");
		}
		if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, "用户ID必须是数字");
		next();
	},
	function (req, res, next) {
		mgrServ.getManager(req.params.id, function (err, manager) {
			if (err) return res.sendResult(null, 400, err);
			res.sendResult(manager, 200, "获取成功");
		})(req, res, next);
	}
);

// 创建用户
router.post("/",
	// 验证参数
	function (req, res, next) {
		if (!req.body.username) {
			return res.sendResult(null, 400, "用户名不能为空");
		}
		if (!req.body.password) {
			return res.sendResult(null, 400, "密码不能为空");
		}
		if (!req.body.rid) {
			req.body.rid = -1;
			//return res.sendResult(null,200,"角色ID不能为空");
		}
		if (isNaN(parseInt(req.body.rid))) req.body.rid = -1;//return res.sendResult(null,200,"角色ID必须是数字");
		next();
	},
	// 处理业务逻辑
	function (req, res, next) {
		params = {
			"username": req.body.username,
			"password": req.body.password,
			"mobile": req.body.mobile,
			"email": req.body.email,
			"rid": req.body.rid
		}
		mgrServ.createManager(params, function (err, manager) {
			if (err) return res.sendResult(null, 400, err);
			res.sendResult(manager, 201, "创建成功");
		})(req, res, next);
	}
);


// 修改用户信息
router.put("/:id",
	// 参数验证
	function (req, res, next) {
		if (!req.params.id) {
			return res.sendResult(null, 400, "用户ID不能为空");
		}
		if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, "用户ID必须是数字");
		next();
	},
	// 处理业务逻辑
	function (req, res, next) {
		mgrServ.updateManager(
			{
				"id": req.params.id,
				"mobile": req.body.mobile,
				"email": req.body.email
			},
			function (err, manager) {
				if (err) return res.sendResult(null, 400, err);
				res.sendResult(manager, 200, "更新成功");
			}
		)(req, res, next);
	}
);

// 删除用户信息
router.delete("/:id",
	// 验证参数
	function (req, res, next) {
		if (!req.params.id) return res.sendResult(null, 400, "用户ID不能为空");
		if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, "ID必须是数字");
		if (req.params.id == 500) return res.sendResult(null, 400, "不允许删除admin账户");
		next();
	},
	// 处理业务逻辑
	function (req, res, next) {
		mgrServ.deleteManager(req.params.id, function (err) {
			if (err) return res.sendResult(null, 400, err);
			return res.sendResult(null, 200, "删除成功");
		})(req, res, next);
	}
);

// 分配用户角色
router.put("/:id/role",
	// 参数验证
	function (req, res, next) {
		if (!req.params.id) {
			return res.sendResult(null, 400, "用户ID不能为空");
		}
		if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, "用户ID必须是数字");

		if (req.params.id == 500) return res.sendResult(null, 400, "不允许修改admin账户");

		if (!req.body.rid) res.sendResult(null, 400, "权限ID不能为空");
		next();
	},
	// 处理业务逻辑
	function (req, res, next) {
		mgrServ.setRole(req.params.id, req.body.rid, function (err, manager) {
			if (err) return res.sendResult(null, 400, err);
			res.sendResult(manager, 200, "设置角色成功");
		})(req, res, next);
	}
);


router.put("/:id/state/:state",
	// 参数验证
	function (req, res, next) {
		if (!req.params.id) {
			return res.sendResult(null, 400, "用户ID不能为空");
		}
		if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, "用户ID必须是数字");

		// // // if(!req.params.state) {
		// // // 	return res.sendResult(null,400,"状态不能为空");
		// // // }
		// // if(isNaN(parseInt(req.params.state))) return res.sendResult(null,400,"状态必须是数字");
		// if(parseInt(req.params.state) != 0 && parseInt(req.params.state) != 1) return res.sendResult(null,400,"管理状态只能为0或1");

		next();
	},
	// 处理业务逻辑
	function (req, res, next) {
		state = 0
		if (req.params.state && req.params.state == "true") state = 1
		mgrServ.updateMgrState(req.params.id, state, function (err, manager) {
			if (err) return res.sendResult(null, 400, err);
			res.sendResult(manager, 200, "设置状态成功");
		})(req, res, next);
	}
)

module.exports = router;